Skip to content

sql: accept WITH (WAIT ...) on ALTER CLUSTER unconditionally - #38627

Draft
aljoscha wants to merge 1 commit into
MaterializeInc:mainfrom
aljoscha:aj/graduate-cluster-reconfiguration
Draft

sql: accept WITH (WAIT ...) on ALTER CLUSTER unconditionally#38627
aljoscha wants to merge 1 commit into
MaterializeInc:mainfrom
aljoscha:aj/graduate-cluster-reconfiguration

Conversation

@aljoscha

@aljoscha aljoscha commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Motivation

The WAIT FOR and WAIT UNTIL READY options on ALTER CLUSTER are still gated by enable_zero_downtime_cluster_reconfiguration and documented as private preview. Graceful reconfiguration is now the standard path for managed cluster shape changes, so the gate only controls whether users can customize its deadline and timeout behavior.

Description

Accept ALTER CLUSTER ... WITH (WAIT ...) unconditionally and remove the feature flag. The existing validation remains in place for WAIT on unmanaged clusters and for WAIT without a replica shape change.

Remove the private-preview labels from the ALTER CLUSTER documentation and remove explicit flag setup from tests and workloads. LaunchDarkly may retain the removed flag temporarily, so the consistency test marks it as stale.

Mixed-version tests can execute WAIT statements against older binaries that still enforce the gate. get_minimal_system_parameters therefore pins the flag on for binaries before v26.41.

Verification

Existing sqllogictest, testdrive, cloudtest, platform-check, parallel-workload, and cluster mzcompose coverage now exercises the syntax without enabling the feature flag. The mixed-version system-parameter boundary is covered by the shared mzcompose configuration.

Graceful cluster reconfiguration has been behind the
`enable_zero_downtime_cluster_reconfiguration` feature flag, default off, so
the `WITH (WAIT ...)` surface is rejected at plan time unless a deployment
turns it on. The controller record is now the only managed-cluster reshape
path, which leaves the flag controlling only whether users can express its
deadline and timeout behavior.

Remove the flag and planner gate. The two rejections that share the code path
stay: a `WAIT` without a replica-shape change, and a `WAIT` on an unmanaged
cluster.

Every test that used the surface enabled the flag itself, so those statements
go. In a mixed-version run some phases execute against a released binary that
still enforces the gate, so `get_minimal_system_parameters` pins the flag on
below v26.41 instead.

The docs drop the private-preview badges because the surface is generally
available once nothing gates it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant